package com.interview.rtc.aigc.service;

import com.interview.rtc.aigc.dao.SessionHistoryDao;
import com.interview.rtc.aigc.dao.UserDao;
import com.interview.rtc.aigc.vo.MessageRequest;

import java.util.List;

/**
 * 会话历史服务接口
 */
public interface SessionHistoryService {
    /**
     * 获取用户的会话列表
     *
     * @param userId 用户ID
     * @return 会话列表
     */
    List<SessionHistoryDao> getSessionList(Long userId);

    /**
     * 创建会话
     *
     * @param sessionHistory 会话历史实体
     * @return 创建的会话历史
     */
    SessionHistoryDao createSession(SessionHistoryDao sessionHistory);

    /**
     * 更新会话
     *
     * @param sessionHistory 会话历史实体
     * @return 更新后的会话历史
     */
    SessionHistoryDao updateSession(SessionHistoryDao sessionHistory);

    /**
     * 删除会话
     *
     * @param id     会话ID
     * @param userId 用户ID
     * @return 是否删除成功
     */
    boolean deleteSession(Long id, Long userId);

    /**
     * 获取会话详情
     *
     * @param id     会话ID
     * @param userId 用户ID
     * @return 会话历史详情
     */
    SessionHistoryDao getSessionDetail(Long id, Long userId);
    
    /**
     * 获取会话详情，包含消息记录
     *
     * @param id     会话ID
     * @param userId 用户ID
     * @return 包含消息记录的会话历史详情
     */
    SessionHistoryDao getSessionDetailWithMessages(Long id, Long userId);

    /**
     * 添加消息
     *
     * @param messageRequest 消息请求
     * @param userId 用户ID
     * @return 是否添加成功
     */
    boolean addMessage(MessageRequest messageRequest, UserDao userId);
    
    /**
     * 根据用户ID和房间ID获取对话历史，用于构建语音聊天UserMessages
     *
     * @param userId 用户ID
     * @param roomId 房间ID
     * @return 格式化后的对话历史列表，用于LLM输入
     */
    List<String> getMessageHistoryForVoiceChat(Long userId, String roomId);
}
